﻿#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

//获取一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列


//00000000000000000000000000001010
//00000000000000000000000000000001
//0000000000000000000000000000




//10000000000000000000000000000001
//11111111111111111111111111111110
// 
// 
//00000000000000000000000000000001
//11111111111111111111111111111111
//
//这里每或上一次num，count加1，1左移i位，相或遍历所有情况32次
//
//int main()
//{
//	int num = -1;
//	int i = 0;
//	int count = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if (num & (1 << i))
//		count++;
//	}
//	printf("2进制中1的个数= % d\n",count);
//	return 0;
//}
//10000000000000000000000000000001
//11111111111111111111111111111110
//11111111111111111111111111111111   -------  -1的补码
//
//11111111111111111111111111111110
// 
//00000000000000000000000000000001
//
// 0000000000000000000000000000000
// 0000000000000000000000000000001
// 
// 
//
//int main()
//{
//	int num = -1;
//	int i = 0;
//	int count = 0;
//	while(num)
//	 {
//		count++;
//		num = num & (num - 1);
//	 }
//	printf("2进制中1的个数= % d\n",count);
//	return 0;
//}


//在一个整型数组中，只有一个数字出现一次，其他数组都是成对出现的，请找出那个只出现一次的数字。
//
//例如：
//
//数组中有：1 2 3 4 5 1 2 3 4，只有5出现一次，其他数字都出现2次，找出5

//职工的姓名的职工号
//需要char，和int类型的数组，存放
//使用冒泡排序来调整循序
//最后使用二分查找即可轻松拿下
//要求输入一个职工号，用折半查找法找出该职工的姓名，
//从主函数输入要查找的职工号，输出该职工姓名

int bin_search(int arr[], int left, int right, int key)
{
	int mid = left + right / 2;
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else if (arr[mid] > key)
		{
			right = mid - 1;
		}
		else
		{
			return mid;
			//break;
		}
	}
	return -1;
}
void input()
{
	int arr1[20] = { 0 };
	char arr2[20] = { 0 };
	char ch = 'a';
	//存放职工号，0，1，2，3，5，6.。。。。
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		arr1[i] = i + 1;
	}
	//存放姓名，存放大写字母a~j十个
	//职工号对应的姓名的下标
	for (i = 0; i < 10; i++)
	{
		arr2[i] = ch;
		ch++;
	}
}//考虑优化,不自动存放职工号和姓名，通过手动scanf


#define N 10
int sort(int arr1[], char arr2[])
{
	//对编号排序；

	int i = 0;
	int temp = 0;
	for (i = 0; i < N; i++)
	{

		if (arr1[i] > arr1[i + 1])
		{
			temp = arr1[i + 1];
			arr1[i + 1] = arr1[i];
			arr1[i] = temp;
		}
	}
	for (i = 0; i < N; i++)
	{
		printf("%d", arr1[i]);
	}
	return 0;
}
int main()
{
	input();
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = sz - 1;
	int key = 0;
	scanf("%d", &key);
	int ret = bin_search(arr, left, right, key);
	if (ret == -1)
	{
		printf("没找到该元素\n");
	}
	else
	{
		printf("找到了下标是： %d", ret);
	}
	return 0;
}